<?xml version="1.0" encoding="utf-8"?>
<schema xmlns:tns="http://atrium.bmc.com/2009/01/classes/types" xmlns:common="http://atrium.bmc.com/2009/01/common" targetNamespace="http://atrium.bmc.com/2009/01/classes/types" xmlns="http://www.w3.org/2001/XMLSchema">
  <import schemaLocation="atrium_common_200901.xsd" namespace="http://atrium.bmc.com/2009/01/common" />
  <simpleType name="ClassDeleteOption">
    <restriction base="string">
      <enumeration value="ALL_DEPENDENCIES" />
      <enumeration value="NONE" />
      <enumeration value="WITH_DATA" />
    </restriction>
  </simpleType>
  <simpleType name="AbstractType">
    <restriction base="string">
      <enumeration value="NO" />
      <enumeration value="REGULAR" />
      <enumeration value="WITH_DATA_REPLICATION" />
    </restriction>
  </simpleType>
  <simpleType name="ClassType">
    <restriction base="string">
      <enumeration value="REGULAR" />
      <enumeration value="RELATIONSHIP" />
      <enumeration value="FEDERATION" />
      <enumeration value="FEDERATION_RELATIONSHIP" />
    </restriction>
  </simpleType>
  <simpleType name="ExposureType">
    <restriction base="string">
      <enumeration value="NONE" />
      <enumeration value="USED_VISIBLE" />
      <enumeration value="USED_HIDDEN" />
    </restriction>
  </simpleType>
  <simpleType name="SchemaType">
    <restriction base="string">
      <enumeration value="REGULAR" />
      <enumeration value="VENDOR_FORM" />
    </restriction>
  </simpleType>
  <simpleType name="RelationType">
    <restriction base="string">
      <enumeration value="REGULAR" />
      <enumeration value="QUERY" />
    </restriction>
  </simpleType>
  <simpleType name="Cardinality">
    <restriction base="string">
      <enumeration value="NONE" />
      <enumeration value="ONE_ONE" />
      <enumeration value="MANY_ONE" />
      <enumeration value="ONE_MANY" />
      <enumeration value="MANY_MANY" />
    </restriction>
  </simpleType>
  <simpleType name="ClassAuditType">
    <restriction base="string">
      <enumeration value="COPY" />
      <enumeration value="LOG" />
      <enumeration value="NONE" />
    </restriction>
  </simpleType>
  <complexType name="ClassAuditInfo">
    <sequence>
      <element name="auditType" type="tns:ClassAuditType" />
      <element name="qualifierString" type="string" />
    </sequence>
  </complexType>
  <complexType name="WeakPropagatedAttrs">
    <sequence>
      <element name="sourceAttributeName" type="string" />
      <element name="targetAttributeName" type="string" />
    </sequence>
  </complexType>
  <complexType name="WeakPropagatedAttrsList">
    <sequence>
      <element minOccurs="0" maxOccurs="unbounded" name="list" type="tns:WeakPropagatedAttrs" />
    </sequence>
  </complexType>
  <complexType name="IndexInfo">
    <sequence>
      <element name="indexName" type="string" />
      <element name="unique" type="boolean" />
      <element name="isPrimaryKey" type="boolean" />
      <element name="attributeNames" type="common:StringArray" />
    </sequence>
  </complexType>
  <complexType name="IndexList">
    <sequence>
      <element minOccurs="0" maxOccurs="unbounded" name="list" type="tns:IndexInfo" />
    </sequence>
  </complexType>
  <complexType name="ClassProperties">
    <choice>
      <element name="regular" type="tns:ClassRegular" />
      <element name="relationship" type="tns:ClassRelationship" />
      <element name="federation" type="tns:ClassFederation" />
      <element name="federationRelationship" type="tns:ClassFederationRelationship" />
    </choice>
  </complexType>
  <complexType name="ClassRegular">
    <sequence>
      <element name="isAbstract" type="tns:AbstractType" />
      <element name="exposure" type="tns:ExposureType" />
      <element name="hiddenPerms" type="string" />
      <element name="visiblePerms" type="string" />
      <element name="categorizationSubclass" type="boolean" />
      <element name="description" type="string" />
      <element name="isFinal" type="boolean" />
      <element name="isSingleton" type="boolean" />
      <element name="author" type="string" />
      <element name="auditInfo" type="tns:ClassAuditInfo" />
    </sequence>
  </complexType>
  <complexType name="ClassRelationship">
    <complexContent mixed="false">
      <extension base="tns:ClassRegular">
        <sequence>
          <element name="relClassName1" type="common:ClassNameId" />
          <element name="relClassName2" type="common:ClassNameId" />
          <element name="roleName1" nillable="true" type="string" />
          <element name="roleName2" nillable="true" type="string" />
          <element name="cardinality" type="tns:Cardinality" />
          <element name="cascadeDelete" type="boolean" />
          <element name="isRole2WeakReference" type="boolean" />
          <element name="weakPropagatedAttrsList" type="tns:WeakPropagatedAttrsList" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="ClassFederation">
    <complexContent mixed="false">
      <extension base="tns:ClassRegular">
        <sequence>
          <element name="vendorName" type="string" />
          <element name="vendorTableName" type="string" />
          <element name="vendorKeyName" nillable="true" type="string" />
          <element name="requiresQualifierForQuery" nillable="true" type="boolean" />
          <element name="schemaType" nillable="true" type="tns:SchemaType" />
          <element name="numTempTables" nillable="true" type="int" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="ClassFederationRelationship">
    <complexContent mixed="false">
      <extension base="tns:ClassRelationship">
        <sequence>
          <element name="relationLinkQualifier" type="string" />
          <element name="relationType" nillable="true" type="tns:RelationType" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="Property">
    <sequence>
      <element name="tag" type="int" />
      <element name="value" nillable="true" type="common:Value" />
    </sequence>
  </complexType>
  <complexType name="PropertyList">
    <sequence>
      <element minOccurs="0" maxOccurs="unbounded" name="list" type="tns:Property" />
    </sequence>
  </complexType>
  <complexType name="ClassInfoIn">
    <sequence>
      <element name="properties" type="tns:ClassProperties" />
      <element name="indexList" type="tns:IndexList" />
      <element name="customCharacList" type="tns:PropertyList" />
    </sequence>
  </complexType>
  <complexType name="ClassInfoOut">
    <complexContent mixed="false">
      <extension base="tns:ClassInfoIn">
        <sequence>
          <element name="superclassNameId" type="common:ClassNameId" />
          <element name="classId" type="string" />
          <element name="classType" type="tns:ClassType" />
          <element name="formName" type="string" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="PropInfo">
    <sequence>
      <element name="tag" type="int" />
      <element name="value" type="common:Value" />
    </sequence>
  </complexType>
  <complexType name="PropInfoList">
    <sequence>
      <element minOccurs="0" maxOccurs="unbounded" name="list" type="tns:PropInfo" />
    </sequence>
  </complexType>
  <element name="GetClass">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="classNameId" type="common:ClassNameId" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="GetClassOutput">
    <complexType>
      <sequence>
        <element name="classInfo" type="tns:ClassInfoOut" />
        <element name="status" type="common:StatusList" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="ListClasses">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="namespace" nillable="true" type="string" />
        <element name="relatedClass" nillable="true" type="common:ClassNameId" />
        <element name="superClass" nillable="true" type="common:ClassNameId" />
        <element name="propInfo" nillable="true" type="tns:PropInfoList" />
        <element name="getHidden" type="boolean" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="ListClassesOutput">
    <complexType>
      <sequence>
        <element name="classList" type="common:ClassNameIdList" />
        <element name="status" type="common:StatusList" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="CreateClass">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="classNameId" type="common:ClassNameId" />
        <element name="superclassNameId" nillable="true" type="common:ClassNameId" />
        <element name="classId" type="string" />
        <element name="classInfo" type="tns:ClassInfoIn" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="SetClass">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="classNameId" type="common:ClassNameId" />
        <element name="newClassNameId" nillable="true" type="common:ClassNameId" />
        <element name="classInfo" nillable="true" type="tns:ClassInfoIn" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="DeleteClass">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="classNameId" type="common:ClassNameId" />
        <element name="option" type="tns:ClassDeleteOption" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <simpleType name="AttributeLimitBase">
    <restriction base="string">
      <enumeration value="ATTACH" />
      <enumeration value="ATTACH_POOL" />
      <enumeration value="CHAR" />
      <enumeration value="CURRENCY" />
      <enumeration value="DATE" />
      <enumeration value="DECIMAL" />
      <enumeration value="DIARY" />
      <enumeration value="ENUM" />
      <enumeration value="INTEGER" />
      <enumeration value="NULLTYPE" />
      <enumeration value="REAL" />
      <enumeration value="TIME" />
      <enumeration value="TIME_OF_DAY" />
    </restriction>
  </simpleType>
  <simpleType name="EnumStyle">
    <restriction base="string">
      <enumeration value="REGULAR" />
      <enumeration value="CUSTOM" />
    </restriction>
  </simpleType>
  <simpleType name="AttributeEntryModeIn">
    <restriction base="string">
      <enumeration value="DISPLAY_ONLY" />
      <enumeration value="OPTIONAL_ENTRY" />
      <enumeration value="REQUIRED_ENTRY" />
    </restriction>
  </simpleType>
  <simpleType name="AttributeEntryModeOut">
    <restriction base="string">
      <enumeration value="DISPLAY_ONLY" />
      <enumeration value="OPTIONAL_ENTRY" />
      <enumeration value="REQUIRED_ENTRY" />
      <enumeration value="NONE" />
      <enumeration value="SYSTEM" />
    </restriction>
  </simpleType>
  <simpleType name="AttributeCreateMode">
    <restriction base="string">
      <enumeration value="OPEN" />
      <enumeration value="PROTECTED" />
    </restriction>
  </simpleType>
  <simpleType name="AttributeType">
    <restriction base="string">
      <enumeration value="CORE" />
      <enumeration value="CORE_INTERNAL" />
      <enumeration value="NONE" />
      <enumeration value="REGULAR" />
    </restriction>
  </simpleType>
  <complexType name="AttachmentLimit">
    <sequence>
      <element name="attachmentPoolName" type="string" />
      <element name="maxSize" type="long" />
    </sequence>
  </complexType>
  <complexType name="AttachPoolLimit">
    <sequence />
  </complexType>
  <complexType name="CharLimit">
    <sequence>
      <element name="charMenu" type="string" />
      <element name="format" type="string" />
      <element name="FTSOption" type="int" />
      <element name="maxCharLength" type="int" />
      <element name="menuStyle" type="int" />
      <element name="pattern" type="string" />
      <element name="QBEOption" type="int" />
    </sequence>
  </complexType>
  <complexType name="CurrencyDetail">
    <sequence>
      <element name="currencyCode" type="string" />
      <element name="precision" type="int" />
    </sequence>
  </complexType>
  <complexType name="CurrencyDetailList">
    <sequence>
      <element minOccurs="0" maxOccurs="unbounded" name="list" type="tns:CurrencyDetail" />
    </sequence>
  </complexType>
  <complexType name="EnumItem">
    <sequence>
      <element name="name" type="string" />
      <element name="id" type="int" />
    </sequence>
  </complexType>
  <complexType name="EnumItemList">
    <sequence>
      <element minOccurs="0" maxOccurs="unbounded" name="list" type="tns:EnumItem" />
    </sequence>
  </complexType>
  <complexType name="CurrencyLimit">
    <sequence>
      <element name="allowableType" type="tns:CurrencyDetailList" />
      <element name="functionalType" type="tns:CurrencyDetailList" />
      <element name="highRange" type="decimal" />
      <element name="lowRange" type="decimal" />
      <element name="precision" type="int" />
    </sequence>
  </complexType>
  <complexType name="DateLimit">
    <sequence>
      <element name="minDate" nillable="true" type="dateTime" />
      <element name="maxDate" nillable="true" type="dateTime" />
    </sequence>
  </complexType>
  <complexType name="DecimalLimit">
    <sequence>
      <element name="highRange" type="decimal" />
      <element name="lowRange" type="decimal" />
      <element name="precision" type="int" />
    </sequence>
  </complexType>
  <complexType name="DiaryLimit">
    <sequence />
  </complexType>
  <complexType name="EnumLimit">
    <sequence>
      <element name="listStyle" type="tns:EnumStyle" />
      <element name="regularEnumItems" type="common:StringArray" />
      <element name="customEnumItems" type="tns:EnumItemList" />
    </sequence>
  </complexType>
  <complexType name="IntLimit">
    <sequence>
      <element name="highRange" type="int" />
      <element name="lowRange" type="int" />
    </sequence>
  </complexType>
  <complexType name="RealLimit">
    <sequence>
      <element name="highRange" type="double" />
      <element name="lowRange" type="double" />
      <element name="precision" type="int" />
    </sequence>
  </complexType>
  <complexType name="TimeLimit">
    <sequence />
  </complexType>
  <complexType name="TimeOfDayLimit">
    <sequence />
  </complexType>
  <simpleType name="AttributeAuditType">
    <restriction base="string">
      <enumeration value="AUDIT" />
      <enumeration value="COPY" />
      <enumeration value="AUDIT_AND_COPY" />
      <enumeration value="NONE" />
    </restriction>
  </simpleType>
  <complexType name="AttributeLimit">
    <sequence>
      <element name="attachmentLimit" nillable="true" type="tns:AttachmentLimit" />
      <element name="attachPoolLimit" nillable="true" type="tns:AttachPoolLimit" />
      <element name="charLimit" nillable="true" type="tns:CharLimit" />
      <element name="currencyLimit" nillable="true" type="tns:CurrencyLimit" />
      <element name="dateLimit" nillable="true" type="tns:DateLimit" />
      <element name="decimalLimit" nillable="true" type="tns:DecimalLimit" />
      <element name="diaryLimit" nillable="true" type="tns:DiaryLimit" />
      <element name="enumLimit" nillable="true" type="tns:EnumLimit" />
      <element name="intLimit" nillable="true" type="tns:IntLimit" />
      <element name="realLimit" nillable="true" type="tns:RealLimit" />
      <element name="timeLimit" nillable="true" type="tns:TimeLimit" />
      <element name="timeOfDayLimit" nillable="true" type="tns:TimeOfDayLimit" />
    </sequence>
  </complexType>
  <complexType name="AttributeInfoBase">
    <sequence>
      <element name="value" nillable="true" type="common:Value" />
      <element name="createMode" type="tns:AttributeCreateMode" />
      <element name="auditType" type="tns:AttributeAuditType" />
      <element name="attrLimit" type="tns:AttributeLimit" />
      <element name="changePerms" type="string" />
      <element name="isHidden" type="boolean" />
      <element name="viewPerms" type="string" />
      <element name="externalName" nillable="true" type="string" />
      <element name="fieldId" nillable="true" type="long" />
      <element name="customCharacList" type="tns:PropertyList" />
    </sequence>
  </complexType>
  <complexType name="AttributeInfoIn">
    <complexContent mixed="false">
      <extension base="tns:AttributeInfoBase">
        <sequence>
          <element name="entryMode" type="tns:AttributeEntryModeIn" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="AttributeInfoOut">
    <complexContent mixed="false">
      <extension base="tns:AttributeInfoBase">
        <sequence>
          <element name="entryMode" type="tns:AttributeEntryModeOut" />
          <element name="attributeName" type="string" />
          <element name="attributeId" type="string" />
          <element name="baseclassNameId" type="common:ClassNameId" />
          <element name="type" type="tns:AttributeType" />
          <element name="dataType" type="tns:AttributeLimitBase" />
          <element name="isPrimaryKey" type="boolean" />
          <element name="propagatedOwner" type="string" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="AttributeInfoList">
    <sequence>
      <element minOccurs="0" maxOccurs="unbounded" name="list" type="tns:AttributeInfoOut" />
    </sequence>
  </complexType>
  <element name="GetAttributes">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="classNameId" type="common:ClassNameId" />
        <element name="attributeNames" nillable="true" type="common:StringArray" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="GetAttributesOutput">
    <complexType>
      <sequence>
        <element name="attributeInfoList" type="tns:AttributeInfoList" />
        <element name="status" type="common:StatusList" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="CreateAttribute">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="classNameId" type="common:ClassNameId" />
        <element name="attributeName" type="string" />
        <element name="attributeId" nillable="true" type="string" />
        <element name="fieldId" nillable="true" type="long" />
        <element name="attributeInfo" type="tns:AttributeInfoIn" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="SetAttribute">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="classNameId" type="common:ClassNameId" />
        <element name="attributeName" type="string" />
        <element name="newAttributeName" nillable="true" type="string" />
        <element name="attributeInfo" nillable="true" type="tns:AttributeInfoIn" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
  <element name="DeleteAttribute">
    <complexType>
      <sequence>
        <element name="loginInfo" nillable="true" type="common:LoginInfo" />
        <element name="classNameId" type="common:ClassNameId" />
        <element name="attributeName" type="string" />
        <element name="extensions" nillable="true" type="common:ExtensionList" />
      </sequence>
    </complexType>
  </element>
</schema>